//编写代码, 实现线程安全版本的单例模式
//饿汉模式，本身就是线程安全的；这里应该是让编写懒汉模式的线程安全版本
public class Test {
    public static void main(String[] args) {
        SingletonLazy.getInstance();
    }
}

class SingletonLazy{
    private  volatile static SingletonLazy singleton = null;
    //注意“volatile”的位置——试了一下，发现都可以（无论是最前边，还是private和static中间，还是static后边）
    //注意：还要是private修饰的——只能通过getInstance“操作”
    //注意：还要是static的（静态的）

    private SingletonLazy(){}
    public static SingletonLazy getInstance(){
        //public修饰
        //static修饰——这样可以通过类名直接调用，否则需要利用该类的对象来调用
        //——弄清楚原因

        if(singleton == null){
            synchronized (SingletonLazy.class){
                if(singleton == null){
                    singleton = new SingletonLazy();
                }
            }
        }


        return singleton;
    }
}
